import { http } from '@/utils/http'

const baseUrl = '/core/PDAReceive'
const ScanCodeApi = {
  /**
   * 根据扫描码获取产品列表
   * @param code 扫描码
   * @returns
   */
  getBasketRecordByCode: (code: string) => {
    return http<ScanProductList>({
      url: `${baseUrl}/getBasketRecordByCode?code=${code}`,
      method: 'GET',
    })
  },
}
export default ScanCodeApi

/**
 * 根据筐码获取产品
 */
export interface ScanProductList {
  code?: string
  companyCode?: string // 客户名称
  id?: number // 主键ID
  parentCode?: string // 筐码
  productCode: string // 产品代码
  productName: string // 产品名称
  qty: number // 数量
  sourceCategory?: number // 来源分类
  sourceCode?: string // 来源代码
  recInLocation?: string // 建议入库库位
}

/**
 * 提交产品信息
 */
export interface scanProductInfo {
  basket: string
  productCode: string
  productName: string
  qty: number
  location: string
}

/**
 * 扫描码类型
 * @description 扫描码类型
 * @abstract 库位码规则：W/w开头，以-分割，示例：W81-1-1-1
 * @abstract 筐码规则：W/w 开头 或者是以s开头的13位时间戳+；+产品编号（PRO开头）+；+产品名称（汉字可能有数字）+；+重量（数字，可能有小数）
 * @abstract 入库单规则：TIN/tin 开头
 * @abstract 出库单规则：TOU/tou 开头
 * @abstract 收货单规则：PUR/pur 开头
 * @abstract 质检单规则：PRT/prt 开头
 * @abstract 盘库单规则：ORDER/order 开头
 */
export const ScanPatternType = {
  /**
   * 库位码规则：W/w开头，以-分割，分别代表仓库码，行码，列码，层码。示例：W81-1-1-1
   */
  LOCATION_CODE: /^w[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+$/i,
  /**
   * 筐码规则：W/w 开头的数字串，例如：w1234567890123

   */
  BASKET_CODE: /^[Ww]\d+$/,
  /**
   * 筐码规则：以s开头的13位时间戳；产品编号（PRO开头）；产品名称（汉字可能有数字和特殊字符）；重量（数字，可能有小数）;单位（例如：kg）;采购订单;供应商 示例：s1650729600000;PRO123456;苹果（非转基因）;1.5;kg;pur1332333;美团
   */
  BASKET_CODE_TIMESTAMP:
    // /^s\d{13};PRO\d+;[\u4e00-\u9fa5a-zA-Z0-9]+;\d+(?:\.\d+)?;[a-zA-Z\u4e00-\u9fa5]+;(?:pur|tou|prt|order)\d+;[\u4e00-\u9fa5a-zA-Z]+$/i,
    /^s\d{13};PRO\d+;[\u4e00-\u9fa5a-zA-Z0-9\d\W]+;\d+(?:\.\d+)?;[a-zA-Z\u4e00-\u9fa5]+;[^;]+;[^;]+$/i,

  /**
   * 入库单规则：TIN/tin 开头
   */
  INBOUND_ORDER: /^tin/i,
  /**
   * 出库单规则：TOU/tou 开头
   */
  OUTBOUND_ORDER: /^tou/i,
  /**
   * 收货单规则：PUR/pur 开头
   */
  RECEIVING_ORDER: /^pur/i,
  /**
   * 质检单规则：PRT/prt 开头
   */
  QUALITY_CHECK: /^prt/i,
  /**
   * 盘库单规则：ORDER/order 开头
   */
  INVENTORY_ORDER: /^order/i,
}
